<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
    // 一.创建对象原型属性和方法；
    //    var obj =  Object.create({name:"张三",age:20});
    //    console.log(obj);

    // 二.隐式原型 __proto__  [[prototype]]
    // _this  __proto__  $$a  $$$b; 私有成员； 
    // let obj = {
    //     name:"张三"
    // }
    // console.log(obj);
    // console.log(obj["[[Prototype]]"]);
    // console.log(obj.__proto__);  // 不规范的；

    // 浏览器提供2个函数操作隐式原型 ；
    // 1.获取隐式原型；
    // var res = Object.getPrototypeOf(obj);
    // console.log(res);

    // 2.设置隐式原型
    // Object.setPrototypeOf(obj,{age:20});
    // console.log(obj);


    // 三、原型的 constructor固有属性；
    // 指代不明； 

        function Perosn1(name){
            this.name = name;
        }


        function Person2(name){
            this.name = name;
        }

        let zhangsan1 = new Perosn1("张三1");
        let zhangsan2 = new Person2("张三2");
        if(zhangsan1.constructor===Perosn1){
            console.log("张三1是Person1构造出来的");
        }

        // let arr = new Array();
        // let obj = new Object();
        // let arr = [];
        // let obj = {};
        // // 1.区分类型 Object.prototype.toString.call();
        // // 2.Array.isArray();
        // if(arr.constructor===Array){
        //         console.log("是一个数组");
        // }

        // if(obj.constructor===Object){
        //     console.log("是一个对象");
        // }

        // 四、扩展数组及对象方法；
        let arr = [1,2,3,4];
        // Object.prototype.
        Array.prototype.myForEach = function(fn){
            for(let i=0;i<this.length;i++){
                fn(this[i],i,this);
            }
        }

        arr.myForEach(item=>{
            console.log(item);
        })

    


        // console.log(arr);
        // arr.forEach(item=>{
        //     console.log(item);
        // })

        // 
    </script>
</body>
</html>